package yhy.pool.book;

import org.apache.coyote.http11.upgrade.UpgradeServletOutputStream;

import java.sql.SQLOutput;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

/**
 * @Author Administrator
 * @Date 2020/5/26 14:01
 * 1.功能界面
 * 2.接收输入信息
 * 3.调用dao方法，实现功能
 **/
public class BookTest {
    /*定义用户输入对象*/
    private static Scanner sc = new Scanner(System.in);
    private static BookDao dao = new BookDaoDB();

    public static void main(String[] args) {
//        循环选择语句
        while (true) {
            /*功能选择界面
            根据输入，进入不同界面
            * */
            System.out.println("----欢迎光临----");
            System.out.println("1.添加图书");
            System.out.println("2.查询图书");
            System.out.println("3.更新图书");
            System.out.println("4.删除图书");
            System.out.println("5.退出");
            System.out.println("请输入相应数字");
//            ctrl+Alt+v自动生成
            int c = sc.nextInt();
//            根据输入进入不同界面（增 删 改 查）
            switch (c) {
                case 1:
                    insertUI();
                    break;
                case 2:
                    selectUI();
                    break;
                case 3:
                    updateUI();
                    break;
                case 4:
                    deleteUI();
                    break;
                case 5:
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入有误");
                    break;
            }
        }
    }

    /**
     * 添加界面
     * 1.展示添加界面
     * 2.接受用户输入信息
     * 3.将用户输入信息封装到对象中
     * 4.调用dao的方法完成添加功能
     */
    private static void insertUI() {
        System.out.println("----添加图书界面----");
        System.out.println("请输入图书名称");
        /*使用同一个Scanner对象，接受完double/int再接受String
         * 会出错，需要sc.nextLine();语句处理*/
        sc.nextLine();
        String name = sc.nextLine();
        System.out.println("请输入出版社");
        String press = sc.nextLine();
        System.out.println("请输入作者");
        String author = sc.nextLine();
        System.out.println("请输入价格");
        double price = sc.nextDouble();
        /*封装用户输入数据*/
        Book book = new Book(name, press, author, price);
        /*调用dao方法真正实现添加/保存功能*/
        int i = dao.insert(book);
        if (i > 0) {
            System.out.println("保存成功");
        } else {
            System.out.println("保存失败");
        }
    }

    private static void selectUI() {
        System.out.println("----查询图书界面----");
        /*1.调用dao层方法得到所有图书集合
         * 2.遍历集合*/
        List<Book> books = dao.selectAll();
        if (books != null) {
            Iterator<Book> iterator = books.iterator();
            while (iterator.hasNext()) {
                Book book = iterator.next();
                /*直接输入book，调用book，toString方法，所以要重写方法*/
                System.out.println(book);
            }
        }
    }

    private static void updateUI() {
        System.out.println("----修改图书界面----");
        /*1.输入书名
         * 2.调用dao方法判断图书是否存在
         *   存在：
         *       1）输出图书对象内容
         *       2）接收用户修改后的图书信息
         *       3）调用dao方法完成修改操作
         *       4）根据返回值，0，提示失败
         *           否则成功
         *      不存在提示*/
        System.out.println("请输入修改的书名");
        sc.nextLine();
        String name = sc.nextLine();
        Book book = dao.selectByName(name);
        if (book == null) {
            System.out.println("图书不存在");
        } else {
            System.out.println(book);
            System.out.println("请输入修改后的图书书名：");
            String n = sc.nextLine();
            System.out.println("请输入修改后的出版社：");
            String press = sc.nextLine();
            System.out.println("请输入修改后的作者：");
            String author = sc.nextLine();
            System.out.println("请输入修改后的价格：");
            double price = sc.nextDouble();
            Book newBook = new Book(book.getId(), n, press, author, price);
            int i = dao.update(book.getId(), newBook);
            if (i == 0) {
                System.out.println("更新成功");
            } else {
                System.out.println("更新失败");
            }
        }
    }

    private static void deleteUI() {
        System.out.println("----删除图书界面----");
        System.out.println("请输入删除的书名");
        sc.nextLine();
        String name = sc.nextLine();
        Book book = dao.selectByName(name);
        if (book == null) {
            System.out.println("该图书不存在");
        } else {
            int i = dao.delete(book.getId());
            if (i > 0) {
                System.out.println("删除成功");
            } else {
                System.out.println("删除失败");
            }
        }
    }
}